{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d45b77f8",
   "metadata": {},
   "source": [
    "# 监督学习"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bab13649",
   "metadata": {},
   "source": [
    "## 2.1 分类和回归"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d3eef2f",
   "metadata": {},
   "source": [
    "监督机器学习的问题主要有两种，分别是**分类**和**回归**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "18c18fe4",
   "metadata": {},
   "source": [
    "分类问题的目标是预测**类别标签**，这些标签来自预定义的可选列表。\n",
    "分类问题可分为**二分类**（看作是回答是和否的问题）和**多分类**（多个类别中的区分）\n",
    "\n",
    "在二分类问题中，通常将一个类别称为**正类**，一个为**反类**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e01a5292",
   "metadata": {},
   "source": [
    "回归任务的目标是预测一个连续值，编程术语叫**浮点数**，数学术语叫**实数**。例如“根据教育水平，年龄和居住地去预测一个人的年收入”，这就是回归的例子。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e9e0421",
   "metadata": {},
   "source": [
    "区分分类任务和回归任务有一个简单的方法，就是问一个问题：输出是否具有某种连续性。在回归问题中，如果预测1年收入，其实39999和40000和40001并没有实质差别，但在分类做任务中，三个数字可能代表完全不同的三种信息。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "293b21af",
   "metadata": {},
   "source": [
    "## 2.2 泛化，过拟合和欠拟合"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dead39a4",
   "metadata": {},
   "source": [
    "在监督学习中，我们要在训练数据上构建模型，让后对没见过的新数据做出准确预测。如果该模型能准确预测出新数据，就说它能够从训练集**泛化**到测试集。最好的结果是，我们一直在最求泛化精度尽可能高的模型。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "96caea09",
   "metadata": {},
   "source": [
    "**过拟合**，通俗易懂地来讲，就是当你在拟合模型的时候，过分关注训练集数据的细节，得到了一个在训练集上表现很好，但不能泛化到新数据上的模型，存在过拟合。\n",
    "\n",
    "与之相反，若你选择的模型太过简单，也就是说你的模型可能没办法抓住数据的全部内容以及数据中的变化，甚至你的模型在训练集上的表现就很差，这种就叫**欠拟合**。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6cfdd3ae",
   "metadata": {},
   "source": [
    "训练精度过低，泛化精度也低，会有欠拟合现象；训练精度过高，泛化精度也会变低，就会出现过拟合现象。最佳的模型是在泛化精度最高的时候产生，这时训练精度是在一个相对的位置上。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb35118b",
   "metadata": {},
   "source": [
    "### 模型复杂度与数据集大小的关系"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "54489b77",
   "metadata": {},
   "source": [
    "模型的复杂度与训练数据的集中输入的变化密切相关：数据集中包含的数据点变化范围越大，在不发生过拟合现象的前提下模型的复杂度就越高。通常来说，数据越多，数据点的数据可以有更大的变化范围，也就可以构建跟复杂的模型。（数据过于接近或者重复数量过多是没有效果的）"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ef41bbc8",
   "metadata": {},
   "source": [
    "收集更多的数据往往比调整模型参数更有效果，如果有能力得到更多数据，请不要选择调参。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1fb30aa4",
   "metadata": {},
   "source": [
    "## 2.3 监督学习算法"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5853af5b",
   "metadata": {},
   "source": [
    "### 2.3.1 一些样本数据集"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94c3d94b",
   "metadata": {},
   "source": [
    "这里是一个模拟的二分类数据集实例forge"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9ae165be",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X.shape: (26, 2)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:77: DeprecationWarning: Function make_blobs is deprecated; Please import make_blobs directly from scikit-learn\n",
      "  warnings.warn(msg, category=DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "import mglearn\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 生成数据集\n",
    "X, y = mglearn.datasets.make_forge()\n",
    "# 数据集绘图\n",
    "mglearn.discrete_scatter(X[:, 0], X[:, 1], y) # 注，这里传入的参数是Numpy数组，Numpy对数组的操作方式不是X[i][j],而是X[i,j]\n",
    "plt.legend([\"Class 0\", \"Class 1\"], loc=4)\n",
    "plt.xlabel(\"First feature\")\n",
    "plt.ylabel(\"Second feature\")\n",
    "print(\"X.shape: {}\".format(X.shape))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "5c2a0df0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 9.96346605  4.59676542]\n",
      " [11.0329545  -0.16816717]\n",
      " [11.54155807  5.21116083]\n",
      " [ 8.69289001  1.54322016]\n",
      " [ 8.1062269   4.28695977]\n",
      " [ 8.30988863  4.80623966]\n",
      " [11.93027136  4.64866327]\n",
      " [ 9.67284681 -0.20283165]\n",
      " [ 8.34810316  5.13415623]\n",
      " [ 8.67494727  4.47573059]\n",
      " [ 9.17748385  5.09283177]\n",
      " [10.24028948  2.45544401]\n",
      " [ 8.68937095  1.48709629]\n",
      " [ 8.92229526 -0.63993225]\n",
      " [ 9.49123469  4.33224792]\n",
      " [ 9.25694192  5.13284858]\n",
      " [ 7.99815287  4.8525051 ]\n",
      " [ 8.18378052  1.29564214]\n",
      " [ 8.7337095   2.49162431]\n",
      " [ 9.32298256  5.09840649]\n",
      " [10.06393839  0.99078055]\n",
      " [ 9.50048972 -0.26430318]\n",
      " [ 8.34468785  1.63824349]\n",
      " [ 9.50169345  1.93824624]\n",
      " [ 9.15072323  5.49832246]\n",
      " [11.563957    1.3389402 ]]\n",
      "[1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 0 0 1 0 0 0 0 1 0]\n"
     ]
    }
   ],
   "source": [
    "print(X)\n",
    "print(y)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "284f3ba6",
   "metadata": {},
   "source": [
    "接下来是模拟的wave数据集来说明回归算法。该数据集只有一个输入特征（forge有两个），和一个连续的目标变量（或响应），后者是模型所要预测的对象（结果）。下面是wave数据集绘制的图像。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "687edcee",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,'Target')"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X, y = mglearn.datasets.make_wave(n_samples=100) # 参数设置样本的个数\n",
    "plt.plot(X, y, 'o')\n",
    "plt.ylim(-3, 3)\n",
    "plt.xlabel(\"Feature\")\n",
    "plt.ylabel(\"Target\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6e33a365",
   "metadata": {},
   "source": [
    "除了上面这些小型的模拟数据集，还有现实世界中的数据集，都包含在scikit-learn中，其中一个是威斯康星州的乳腺癌数据集，可以用load_breast_cancer加载"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "04336af7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cancer.keys(): \n",
      "dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names'])\n",
      "Shape of cancer data: (569, 30)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "cancer = load_breast_cancer()\n",
    "print(\"cancer.keys(): \\n{}\".format(cancer.keys()))\n",
    "print(\"Shape of cancer data: {}\".format(cancer.data.shape))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9fdcc8a7",
   "metadata": {},
   "source": [
    "还有一个：波士顿房价数据集。这个数据集相关的任务是，利用犯罪率、是否临近查尔斯河、公路可达性等信息，来预测20世纪70年代波士顿房屋价格的中位数。这个数据集包含506个数据点和13个特征。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "0b4980b2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data shape: (506, 13)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import load_boston\n",
    "boston = load_boston()\n",
    "print(\"Data shape: {}\".format(boston.data.shape))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "68980596",
   "metadata": {},
   "source": [
    "如果我们要扩展这个数据集，即输入特征不仅包括原有的13个测量结果，还包括特征之间的乘积（**交互项**）。换句话说，在波士顿房价这个数据集中，不仅可以将犯罪率和公路可达性作为特征，还可以将两者的乘积作为新的特征。像这样的方法叫做**特征工程**。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "2ae72986",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X.shape: (506, 104)\n"
     ]
    }
   ],
   "source": [
    "X, y = mglearn.datasets.load_extended_boston()\n",
    "print(\"X.shape: {}\".format(X.shape))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a367d0c6",
   "metadata": {},
   "source": [
    "最初的13个特征加上13个特征的两两组合得到的91个特征（13+12+11+10+......+1），共104个特征"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b090c3ca",
   "metadata": {},
   "source": [
    "### 2.3.2  k近邻"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "27a1ed2c",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:77: DeprecationWarning: Function make_blobs is deprecated; Please import make_blobs directly from scikit-learn\n",
      "  warnings.warn(msg, category=DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mglearn.plots.plot_knn_classification(n_neighbors=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b4b193d7",
   "metadata": {},
   "source": [
    "mglearn是专为本书（python机器学习基础）而编写的库，具体封装并不清楚。本示例添加了3个新数据点（五角星表示）。对于每个新数据点，标识了在训练集中与它最近的那个点，单一最近邻近算法的预测结果就是与五角星相连的那个点的标签"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "87b6ff98",
   "metadata": {},
   "source": [
    "除了单一邻近，还可以考虑任意个（k个）邻居。在考虑多于1个邻居的情况时，用投票法去指定标签。也就是说，对于新数据标签的指定，取决于离新数据最近的，出现次数最多的类别的标签。如下面的例子："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "051d8e95",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:77: DeprecationWarning: Function make_blobs is deprecated; Please import make_blobs directly from scikit-learn\n",
      "  warnings.warn(msg, category=DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mglearn.plots.plot_knn_classification(n_neighbors=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "494bb39e",
   "metadata": {},
   "source": [
    "#### sklearn应用k邻近算法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "aa6ec75d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test set predictions: [1 0 1 0 1 0 0]\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:77: DeprecationWarning: Function make_blobs is deprecated; Please import make_blobs directly from scikit-learn\n",
      "  warnings.warn(msg, category=DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "X, y = mglearn.datasets.make_forge()\n",
    "\n",
    "# random.seed(x) 随机数种子，当使用random.seed(x)设定好种子之后，其中x可以是任意数字，比如10，那么每次调用生成的随机数将会是同一个。\n",
    "# random_state实际上与random.seed相同作用\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)\n",
    "clf = KNeighborsClassifier(n_neighbors = 3)\n",
    "clf.fit(X_train, y_train)\n",
    "print(\"Test set predictions: {}\".format(clf.predict(X_test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "b6941c88",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test set accuracy: 0.86\n"
     ]
    }
   ],
   "source": [
    "print(\"Test set accuracy: {:.2f}\".format(clf.score(X_test, y_test)))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7aef47d",
   "metadata": {},
   "source": [
    "#### 分析KNeighborsClassifier"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bbb9527d",
   "metadata": {},
   "source": [
    "查看决策边界"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "a8172551",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "F:\\Anaconda\\lib\\site-packages\\sklearn\\utils\\deprecation.py:77: DeprecationWarning: Function make_blobs is deprecated; Please import make_blobs directly from scikit-learn\n",
      "  warnings.warn(msg, category=DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1b1075c2048>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 936x216 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig, axes = plt.subplots(1, 4, figsize = (13, 3))\n",
    "X, y = mglearn.datasets.make_forge()\n",
    "\n",
    "for n_neighbors, ax in zip([1, 3, 9, 25], axes): # zip函数，将两个参数的元素两两封装成一个一个元组\n",
    "    clf = KNeighborsClassifier(n_neighbors=n_neighbors).fit(X, y)\n",
    "    mglearn.plots.plot_2d_separator(clf, X, fill=True, eps=0.5, ax=ax, alpha=.4)\n",
    "    mglearn.discrete_scatter(X[:,0], X[:, 1], y, ax=ax)\n",
    "    ax.set_title(\"{} neighbor(s)\".format(n_neighbors))\n",
    "    ax.set_xlabel(\"feature 0\")\n",
    "    ax.set_ylabel(\"feature 1\")\n",
    "axes[0].legend(loc=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eedb5740",
   "metadata": {},
   "source": [
    "从上图可以看出，邻居数越少，决策边界约弯曲也越精确，邻居数多，决策边界也就越来越平滑。换句话说，越少的邻居对应越高的模型复杂度，反之，则对应越低的模型复杂度。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d40dd25b",
   "metadata": {},
   "source": [
    "这里验证一下泛化能力与模型复杂度之间的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "b7997cc4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1b1076e2c18>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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2bMBWLBgAceOHatyTG5uLkFBQYSGhnL48GHmz58PQM+ePUlPT2flSqszJC8vj+LiYsaMGcPrr79eFpDs3VCxsbGsWrUKgLlz51Zbp5ycHNq3b4+XlxcffPBBWbJ/zJgxzJgxgxMnTlQ4b0BAABdddBG33347N998c4P/TSrTYAGEB/qSpaOhlPKIyMhIzj33XPr27ctf/vKXKo+PHTuW4uJiEhISeOihhxgyZIjL6/DII4+wYMECkpKSmD9/Pu3btyc4OLjCMYmJifTv358+ffrw29/+lnPPPRcAPz8/Zs2axZ133kliYiIXXnghBQUF3HLLLXTu3JmEhAQSExP56KOPyq519913M3z4cLy9vaut0x//+Efee+89hgwZwvbt28taHWPHjmXcuHEkJyfTr18/pk+fXvacKVOmICKMGTPG1f9ESF2aX01BcnKyqe/mR68u3smz321j6xNjCfCt/s1TqjnasmULvXr18nQ1POrUqVN4e3vj4+PDL7/8wu23316WcG9Kpk+fTk5ODk888YTTx5291yKyyhiTXNu5dSFBrAQ3QPaJItqFarBQqqXZt28fV199NaWlpfj5+fHmm296ukqn7corr2TXrl388MMPbjm/BgusnAXAsROFtAsN8HBtlFJnWvfu3VmzZo2nq9Eg9tFc7qI5CyoGC6WUUlVpsADCg8q7oZRSSlWlwYLyloWOiFJKKec0WOCY4NZgoZRSzmiwAPx9vAn089bFBJXygIYsUQ7wwgsvlE1QU+6jwcJGFxNUyjOaQ7BojEuKu5oGC5vwIF1MUClPqLxEOcCzzz7LwIEDSUhIKFsK/Pjx41x66aUkJibSt29fZs2axUsvvUR6ejqjRo1i1KhRVc79+OOPM3DgQPr27cttt91WtgbUzp07GT16NImJiSQlJbFr1y6g6tLfACNHjsQ+4ffIkSPExsYC8O677/Kb3/yGyy+/nDFjxpCfn88FF1xQtvz5F198UVaP999/v2wm9/XXX09eXh5xcXEUFVmfObm5ucTGxpbdb4x0noWNtiyUAubfB4c2uPac7eLh4qerfbjyEuULFixgx44d/PrrrxhjGDduHEuWLCEzM5MOHTrwzTffANbaSaGhoTz//PMsXryYqKioKueeOnUqDz/8MADXX389X3/9NZdffjlTpkzhvvvu48orr6SgoIDS0lKnS3/X5pdf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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "cancer = load_breast_cancer()\n",
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "cancer.data, cancer.target, stratify=cancer.target, random_state=66) # 随机数种子\n",
    "\n",
    "training_accuracy = []\n",
    "test_accuracy = []\n",
    "neighbors_settings = range(1, 100)\n",
    "for n_neighbors in neighbors_settings:\n",
    "    clf = KNeighborsClassifier(n_neighbors = n_neighbors)\n",
    "    clf.fit(X_train, y_train)\n",
    "    training_accuracy.append(clf.score(X_train, y_train))\n",
    "    test_accuracy.append(clf.score(X_test, y_test))\n",
    "\n",
    "plt.plot(neighbors_settings, training_accuracy, label=\"training accuracy\")\n",
    "plt.plot(neighbors_settings, test_accuracy, label=\"test accuracy\")\n",
    "plt.ylabel(\"Accuracy\")\n",
    "plt.xlabel(\"n_neighbors\")\n",
    "plt.rcParams['figure.figsize'] = [17,4]\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "59ba7733",
   "metadata": {},
   "source": [
    "#### k邻近算法回归"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07ab43dc",
   "metadata": {},
   "source": [
    "k邻近算法还可用于回归问题。还是从单一近邻开始，这次使用wave训练集。\n",
    "\n",
    "下图中，测试数据点在x轴，用绿色五角星表示，蓝色五角星表示预测结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "d12bcaf3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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97+nZGVlZWdkZGTPmDHDVVdXJ4FzBntvIbIyjozFqDlztgyur/edkkzX1/tsc+ZsGdzZ0bHf//73VdOmTeu+bdu2LYB/Gujjjz/u8dFHH20eMWLECQAoKSmp7N+/v/fo0aMybty47JkzZ349YMAAb/Pz7Nq1K/nll1/+fOLEie7LL7/82y+++OIZs2bNOi2mfv36NW7ZsmXr3Llz0+bOndt/4cKF7l/96leDLrrootrf/va3Xy5ZsqTXX//6134tv8/tdifOnTt3UHl5+dY+ffp4J06cmJmTk+MBgEsvvfToDTfcsM1ms+Gxxx7rN2fOnAHPPvts1S233FLTs2dP75w5c74CgJqaGnuw4wDgnXfe6fW73/2ueuzYsXXN70dDQwNKS0t39unTx1ddXZ0wYcKEETfddNMhAKisrEx+9tlnK19++eVdlZWVifPnzx+4YcOGLb179/ZNnDgxY+RIf+2u2267behdd9311ZQpU45++umnSVOmTBn++eefb24ZXzg54Tz+R/xx6yIs6r8USwc1olEUgv/yD0YgKgEJ6vv4/t7rcf1Xtnb+hmv5c/Tqq6/22rlzZ/LHH3+8VSmFyZMnn/XPf/6z51dffZUwYMCAhrVr1+4E/KM7ffv29T799NP933rrrR0DBw5sbH5ej8cjd9xxh+v111/fPnLkyOPTpk37duBrY8aMqf/ggw+2JSYmYtmyZSm//OUvh6xateqz++67b29ZWVmPF198cRcAHDx40BbsuA7czpCMGpV6vKLie1vnzNnSf9687YNOnPCJz4eQ77nNBpWUZFP33JOx94EHRn5lt7f9rZG65wG9evXyfvLJJ1uffPLJvj//+c+H/utf/9oJAJ999lnyu+++uyMhIQF33HHH4IsvvvjI4sWLK/fv328fP3581lVXXXXkscceS+vevbtvx44dW9avX9/9ggsuyG55/rKysuT58+cPfO+997YNHDiw8auvvrL379/fO3ny5EPTpk07/KMf/ejr5sd7PB657bbbhq1evXr76NGjj19zzTWuefPmpT3wwAP7gODvLaHeeyIdmIzFqC+/rE/qyOudNXr06GOBRAwAHn300f6lpaW9/df6MnHz5s3JAwYMOGVqbfDgwccnTpxYBwDjxo3zVFZWBh19uOmmm74GgHPPPdfzj3/84wwA+OCDD3ouW7ZsJwD84Ac/ONKrVy9vy+97++23e5x33nm1gwYNagSAa6+99uCOHTuSAeCLL75I+v73vz+kpqYm8cSJE7ahQ4ceD3bt1o6rrKxM7N27d2Ow6RqfzycFBQVD3n///Z42mw379u1LqqqqSgCAgQMHnrjkkkuOAcC///3vHhMmTKjt37+/FwCuueaarwPxvfvuu70+/fTT7oFzHj161P71119HfITaDjtuxI1fTcTEQ/Mw79s1qEk+gRPtXjcJSb40pNXfg3s+d8IZ9F6257XXXuv19ttv98rOzs4GAI/HY9u2bVvyJZdcUltYWDj09ttvH3z11Vcfvuyyy9qsQr9x48bkIUOGHB81atRxAMjLyzvw3HPPpQHAwYMH7ddff/2wysrKZBFRDQ0NQbOXUI8Lh4QEG+bMyflqxoyhh2bMeO/bu3Z5kuvqvO3e8+Rkm8/l6lG/aNH5n48alar1ngf88Ic/PAgAP/3pTw/ef//9QwOvX3vttV8Hli+sXbu216pVq3o/8cQTAwD/2sudO3cmvfPOOz1/8Ytf7AOACRMm1GVkZHhann/VqlW9rrzyyq8DyWCg77Rm06ZNyUOGDDk+evTo4wBw6623Hvjf//3fbwHYBwR/byGyMk5TxqgBA5JPdOT1znI4HCeTkhUrVqS89dZbKWVlZdu2b9++JSsrq66uru60n6GkpKST62HsdrtqbGwM+gsvOTlZAUBCQsLJY0LdEUIk+O/QO+64I33WrFn7duzYseXJJ590Hz9+POjPeGvHLV26NHXy5MlB1xctWLCgz4EDBxI++eSTrdu2bdvSt2/fhkD7m9+nttqglEJZWdnWbdu2bdm2bduWffv2fXzGGWd0eW1UqAKjZJfj8uoEJLR5sxOQoC7H5dVP4ImtnU3EAH+bCwoKqgNt3rVrV8Wdd965f/To0cc3bNiwZdSoUXWFhYWD77777oHtnau1/+/33nvv4Isuuqj2008/3bx8+fKdJ04ETzRDPS6cAqNkd9xxVnVSUtula5KSbOrnPx9eXVExZWtnEzEgvPccAGy2b26TyDfr3Xr27HnKz/2SJUt2Bq5ZXV39ydlnn13f9D3txtv8vKG0ry3B3luIrIzJWIx64IHsPcnJtlN+iScn23wPPJC9p7PnTE1N9R47dqzVn4lDhw7ZU1NTvSkpKb6PPvooedOmTWF/+u/cc889+tJLL/UB/FMtR44cOW0l/He/+91j77//fsqXX35pP378uCxduvTkX761tbX29PT0BgB44YUX+gZeT0lJ8dbW1trbO2716tW9rrrqqiPA6ffj8OHD9n79+jV069ZNLV++PGXv3r1BRyG/853vHFu/fn1KTU2NvaGhAX//+99PxnfhhRceefTRR78V+HzdunXdg8UXSXbY4YKr3o7g65maHedzwVXX3rRkSy3v29SpU4+89NJL/Q4fPmwDgC+++CJxz549CZWVlYkpKSm+WbNmHSwoKPhq48aNDgDo0aOHN3Bsc2PHjq2vqqpK2rx5czcA+Nvf/nZyfeSRI0fsQ4YMOQEACxYsODm13atXL+/Ro0dt7R0XaQkJNowenVqfmCht3vPERPGNGZNa1960ZEuRuucBL774Yh8AeP75588YN25c0IdMLr744iO///3v+/uaana8++673QHgwgsvPPryyy/3AYAPP/wweceOHY6W33vZZZcd+cc//tHnyy+/tAPAV199ZQeAnj17eo8cORL0Z2HPnj1JgfVrL774Yt/vfOc7tSHdLCILYjIWo372szMP/uEPY90DByafEAEGDkw+8Yc/jHV35WnKAQMGeHNzc48OHz58ZGARcHPTp08/3NjYKBkZGdm//vWvB40ZMybsT/7NnTt375tvvtkrOzs7q7S0NDUtLa2hd+/ep0xZOJ3OhnvvvXfveeedl3XhhRdmjB49+uS0R2Fh4d4bb7zxzNzc3My+ffueXP8yffr0Q6Wlpb0DC+SDHdfY2Igvvvgiedy4cfXB7sdPfvKTg5s2beqRk5OT9fLLL/cZNmxYfbA2DBs2rOHOO++sPuecc7IuuOCCzIyMjLrU1FQvABQXF+/esGFDj4yMjOwzzzxz5JNPPpkWLL5w39eW3sf7vY/jeJvJ33Ect3emzEXL+3bttdcemTFjxsFzzjlnREZGRvY111xz5qFDh+zl5eXdx44dmzVixIjsRx99dOADDzxQDQA//OEP90+dOnV4y8XkDodD/c///I972rRpZ+Xm5mYOHTr05Cjwvffe++V///d/Dzn77LNHeL3f/LhMnTq1dseOHd0DC/hbOy4ali7d09vj8bZ5zz0er33p0o6XuYjUPQ84fvy4jB49esRTTz3V/4knntgd7Ji5c+fubWxslBEjRmQPHz585P333z8YAO6+++59x44ds2dkZGQ/8sgjA0aNGnXa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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mglearn.plots.plot_knn_regression(n_neighbors=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a25b1aec",
   "metadata": {},
   "source": [
    "多近邻时，预测结果为邻居的平均值。多近邻结果如下："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "7c6d9b16",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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c88991jv3r0rAeCaa645tG3btlgA+O6772KuuuqqPvv3748+efKkrW/fvif8nbuh/YqLi6M7d+5c6W+6xuv1yvTp0/t89tlnHWw2G/bt2xdTUlISBQC9evU6OXbs2OMA8J///Kf9yJEjj/Xo0cMDAFdfffWPvvg+/fTTjtu3b4/zHbO0tNT+448/Bn2E2g47bsANP4zG6MNP4skz9mN/7EmcbPK8MYjxdkf38ntx77dJSPJ7LZvy3nvvdfzkk086pqWlpQGA2+22bdmyJXbs2LHHsrOz+95+++0JP//5z49ceumljVahX7duXWyfPn1ODBo06AQAZGZmHnz55Ze7A8ChQ4fs1113Xb/i4uJYEVEVFRV+s5fm7hcIUVE2zJqV/sPkyX0PT5783zN27nTHlpV5mrzmsbE2r9PZvnz+/FHfDhrUSes197n55psPAcCtt956aObMmX1926+55poffcsXVq1a1XH58uWdn3nmmZ5A1drLHTt2xKxevbrD//7v/+4DgJEjR5YlJye76x9/+fLlHa+44ooffcmgr+80ZP369bF9+vQ5MXjw4BMAMHXq1IP/93//dzqAfYD/zxYiK+M0ZZjq2TP2ZEu2t5bD4ahJSpYuXRr/8ccfxxcUFGzZunXrptTU1LKysrJTfoZiYmJq1sPY7XZVWVnp9xdebGysAoCoqKiafZr7RAgR/79D77jjjsRp06bt27Zt26Znn33WdeLECb8/4w3tt2jRok7jxo3zu77oxRdf7HLw4MGojRs3bt6yZcumrl27VvjaX/s6NdYGpRQKCgo2b9myZdOWLVs27du3b8Npp53W5rVRzeUbJbsMl+2NQlSjFzsKUeoyXLb3GTyzubWJGFDV5unTp+/1tXnnzp1Fd91114HBgwef+PLLLzcNGjSoLDs7O+Gee+7p1dSxGvr/ft999yVceOGFx7Zv3/71kiVLdpw86T/RbO5+geQbJbvjjrP2xsQ0XromJsam7ryz/96iovGbW5uIAYG95gBgs/10mUR+Wu/WoUOHOj/3Cxcu3OE75969ezcOHz68vPo9TcZb+7jNaV9j/H22EFkZk7Ew9fDDabtjY211fonHxtq8Dz+ctru1x+zUqZPn+PHjDf5MHD582N6pUydPfHy896uvvopdv359wO/+O+ecc0pff/31LkDVVMvRo0dPWQn/s5/97Phnn30W//3339tPnDghixYtqvnL99ixY/bExMQKAHj11Ve7+rbHx8d7jh07Zm9qv/fff7/jlVdeeRQ49XocOXLE3q1bt4p27dqpJUuWxO/Zs8fvKOQFF1xwfO3atfH79++3V1RU4N13362J7/zzzz/6xBNPnO77fs2aNXH+4gsmO+xwwlluh//1TLX28zrhLGtqWrK++tdtwoQJR19//fVuR44csQHAd999F7179+6o4uLi6Pj4eO+0adMOTZ8+/Yd169Y5AKB9+/Ye3761DR06tLykpCTm66+/bgcA//znP2vWRx49etTep0+fkwDw4osv1kxtd+zY0VNaWmprar9gi4qyYfDgTuXR0dLoNY+OFu+QIZ3KmpqWrC9Y19xn7ty5XQDglVdeOW3YsGF+bzK56KKLjv75z3/u4a2u2fHpp5/GAcD5559f+sYbb3QBgC+++CJ227ZtjvrvvfTSS4/+61//6vL999/bAeCHH36wA0CHDh08R48e9fuzsHv37hjf+rW5c+d2veCCC44162IRWRCTsTD129+eeegvfxnq6tUr9qQI0KtX7Mm//GWoqy13U/bs2dOTkZFR2r9//4G+RcC1TZo06UhlZaUkJyenPfjgg72HDBkS8Dv/Zs+evefDDz/smJaWlpqfn9+pe/fuFZ07d64zZZGUlFRx33337Tn33HNTzz///OTBgwfXTHtkZ2fvueGGG87MyMhI6dq1a836l0mTJh3Oz8/v7Fsg72+/yspKfPfdd7HDhg0r93c9brnllkPr169vn56envrGG2906devX7m/NvTr16/irrvu2nv22WennnfeeSnJycllnTp18gBAbm7uri+//LJ9cnJy2plnnjnw2Wef7e4vvkBf1/o+w2edT+BEo8nfCZywt6bMRf3rds011xydPHnyobPPPntAcnJy2tVXX33m4cOH7YWFhXFDhw5NHTBgQNoTTzzR6+GHH94LADfffPOBCRMm9K+/mNzhcKi//e1vrokTJ56VkZGR0rdv35pR4Pvuu+/73//+932GDx8+wOP56cdlwoQJx7Zt2xbnW8Df0H6hsGjR7s5ut6fRa+52e+yLFrW8zEWwrrnPiRMnZPDgwQOee+65Hs8888wuf/vMnj17T2VlpQwYMCCtf//+A2fOnJkAAPfcc8++48eP25OTk9Mef/zxnoMGDTrlc2PEiBHlM2bM2HvB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\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mglearn.plots.plot_knn_regression(n_neighbors=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "83b3eea0",
   "metadata": {},
   "source": [
    "用于回归的k近邻算法在sklearn中的KNeighborsRegressor类中实现，与KNeighborsClassifier用法类似："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "d5dd1bce",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsRegressor(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "          metric_params=None, n_jobs=1, n_neighbors=3, p=2,\n",
       "          weights='uniform')"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "# 取数据集\n",
    "X, y = mglearn.datasets.make_wave(n_samples=50)\n",
    "# 分割数据为训练集和测试集\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)\n",
    "# 初始化模型\n",
    "reg = KNeighborsRegressor(n_neighbors=3)\n",
    "# 训练模型\n",
    "reg.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "9f3dcbab",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test set predictions:\n",
      "[ 0.68896417  0.43848302 -0.81522381  0.1651502   0.31821632  0.32709629\n",
      " -0.17612523 -1.02098696 -0.07009828 -1.43420766  0.43848302  1.62632353\n",
      " -0.99456101]\n"
     ]
    }
   ],
   "source": [
    "print(\"Test set predictions:\\n{}\".format(reg.predict(X_test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "1de047e7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test set R^2: 0.81\n"
     ]
    }
   ],
   "source": [
    "print(\"Test set R^2: {:.2f}\".format(reg.score(X_test, y_test))) #{:.2f} 表示打印输出小数点保留两位小数；"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ed89a721",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1b106ee8f98>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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M4a1a9eWWu7EiROMGjWKzz//nK+//prdu3e7prVt25Zly5axdu1aHn30UcaOHUuNGjV47LHHGDZsGBkZGVx99dVe53OaN28eAwcOZMKECdSpU4eMjAzefvttAN566y3WrFnDqlWreP755zl06JDrOaenp7Ny5Uo6derE3Xffzfz581m6dCl79uxxrXvcuHEMHDiQlStXsmjRIh544AFEpFT7qori4o+/09mcA2v7X1fIv+1Gj4bzz9cjbUrFobKUggQJfxEJNIuUUrFD80gpFQtiIIviakwkZy+k/HyripSf72Dq1O08+mhqucdG8uass87i/PPPd92fMWMGb775JoWFhezevZvMzExSU1NLLFOjRg0GDRoEwHnnncfXX3/tdd1//OMfXfNs374dgGXLlvHwww8D0KlTJ9q1a1dquczMTM4991zOOussAIYNG+Yq8uTk5HDzzTezdetWv8/L13x5eXns27eP008/ncLCwlLLvfDCC3zyyScA7Nq1i61bt5KWlka1atW48sorXe1r06YNrVq1AuD66693tW/+/PnMnTvXdZpcXl4ev/76q9+2xoKy/q4KpiNAMANrl2nQbedlK5VScclf70av8ws4IlBD0ixSSsUMzSOlVCyIgSyKq55I7r2QnCLZG6lWrVqu/2/evJkXX3yRRYsWsX79egYOHEheXulT6dwH4k5MTPRajAGoXr16qXmCvQqYr9Ob/v73v3PppZeyYcMGZs+e7bV9/uZbsmQJF154oddlFi5cyNKlS/n2229Zt24dHTt2dC1Xo0YNV5v8DiJtDLNnz3aNOfXrr79y7rnnBvWcY0FZfpSB/yJUsL/ZTJn6Fiil4pExpgyns0mZr0SplFJKKaUqj7gpInn2QnJy9kaK1NhITkeOHKFOnTrUrVuXrKwsvvjii7Bvo1evXnzwwQcA/PDDD15Pl0tNTeXnn39m27ZtGGOYMWOGa9rhw4dp0aIFANOmTXM9XqdOHY4ePRpwPud4SABJSVYnN2eB6/DhwzRo0IAaNWrw448/smrVKq/PoV27dmzatImdO3dijGGmW5X10ksv5aWXXnLdd56u59m+qsJ1dbbgZi7bNKWU8lCWUlBCQtl7XSqllFJKqcojbopI3nohOUV6bCSwLnufmppK+/btueOOO+jZs2fYtzF69Gh+++03OnbsyMSJE2nfvj316tUr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\n",
      "text/plain": [
       "<Figure size 1440x288 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "# fig是主背景， axes是子表（列表）\n",
    "fig, axes = plt.subplots(1, 4, figsize=(20,4))\n",
    "line = np.linspace(-3, 3, 100000).reshape(-1, 1) # 这里-1是指未设定行数，程序随机分配，所以这里-1表示任一正整数\n",
    "for n_neighbors, ax in zip([1, 3, 9, 27], axes):\n",
    "    reg = KNeighborsRegressor(n_neighbors = n_neighbors)\n",
    "    reg.fit(X_train, y_train)\n",
    "    ax.plot(line, reg.predict(line))\n",
    "    ax.plot(X_train, y_train, '^', c=mglearn.cm2(0), markersize=8)\n",
    "    ax.plot(X_test, y_test, 'v', c=mglearn.cm2(1), markersize=8)\n",
    "    ax.set_title(\n",
    "    \"{} neighbor(s)\\n train score: {:.2f} test score: {:.2f}\".format(\n",
    "    n_neighbors, reg.score(X_train, y_train), reg.score(X_test, y_test))\n",
    "    )\n",
    "    ax.set_xlabel(\"Feature\")\n",
    "    ax.set_ylabel(\"Target\")\n",
    "    \n",
    "axes[0].legend([\"Model predictions\", \"Training data/target\", \"Test data/target\"], loc=\"best\")  # loc代表注释格的位置"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0a419bdf",
   "metadata": {},
   "source": [
    "k近邻算法的邻居个数参数（n_neighbors），当设置的个数比较小时，得到的结果都会比较好\n",
    "\n",
    "k近邻算法简单，但其数据集不能具有过多的特征，且预测速度慢，在实践中并不会使用到"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
